import type { ProcessDataModel, ProcessTimelineModel } from './models';

import type {
  ProductStateModel,
  StepExecutionModel,
} from '#/api/production/models';

import { requestClient } from '#/api/request';

/**
 * 产品过程追溯根据零件码模糊查询
 * @param sn 零件码，模糊匹配
 * @param limit 查询返回的最多数量，默认 20 条。
 * @returns 返回查询结果
 */
export async function getProcessProductLimitApi(
  sn: string,
  limit: number = 20,
) {
  return requestClient.get<ProductStateModel[]>(
    '/mes/traceability/product/limit',
    {
      params: { sn, limit },
    },
  );
}

/**
 * 查询产品生产工艺步骤
 * @param sn 零件码，模糊匹配
 * @param lineId 生产线。
 * @returns 返回查询结果
 */
export async function getProcessStepApi(sn: string, lineId: number) {
  return requestClient.get<StepExecutionModel[]>(
    '/mes/traceability/product/step',
    {
      params: { sn, lineId },
    },
  );
}

/**
 * 产品生产过程时间线
 * @param sn 零件码，模糊匹配
 * @param lineId 生产线。
 * @returns 返回查询结果
 */
export async function getProcessTimelineApi(
  sn: string,
  lineId: number,
): Promise<ProcessTimelineModel[]> {
  return requestClient.get<ProcessTimelineModel[]>(
    '/mes/traceability/product/timeline',
    {
      params: { sn, lineId },
    },
  );
}

/**
 * 查询产品工艺步骤过程数据。
 * @param stepExecutionId 工艺步骤执行记录 Id。
 * @returns 返回查询结果
 */
export async function getStepProcessDataApi(
  stepExecutionId: number,
): Promise<ProcessDataModel> {
  return requestClient.get<ProcessDataModel>(
    '/mes/traceability/product/stepData',
    {
      params: { stepExecutionId },
    },
  );
}
